// var n;
// var r = cc._decorator;
// var c = r.ccclass;
// var l =
//     (r.property,
//     (function (e) {
//         function t() {
//             var t = (null !== e && e.apply(this, arguments)) || this;
//             t._content = null;
//             t._className = "unknow";
//             t._bundle = null;
//             t.params = null;
//             return t;
//         }
//         __extends(t, e);
//         t.huoqu_yuzhiti_url = function () {
//             return "";
//         };
//         Object.defineProperty(t.prototype, "args", {
//             get: function () {
//                 return this._args;
//             },
//             set: function (e) {
//                 this._args = e;
//             },
//             enumerable: !1,
//             configurable: !0
//         });
//         Object.defineProperty(t.prototype, "content", {
//             get: function () {
//                 return this._content;
//             },
//             set: function (e) {
//                 this._content = e;
//             },
//             enumerable: !1,
//             configurable: !0
//         });
//         Object.defineProperty(t.prototype, "className", {
//             get: function () {
//                 return this._className;
//             },
//             set: function (e) {
//                 this._className = e;
//             },
//             enumerable: !1,
//             configurable: !0
//         });
//         Object.defineProperty(t.prototype, "bundle", {
//             get: function () {
//                 return this._bundle;
//             },
//             set: function (e) {
//                 this._bundle = e;
//             },
//             enumerable: !1,
//             configurable: !0
//         });
//         t.prototype.guanbi_dongzuo = function () {
//             return Promise.resolve();
//         };
//         t.prototype.close = function () {
//             var e = this;
//             this.guanbi_dongzuo
//                 ? this.guanbi_dongzuo().then(function () {
//                       Manager.uiManager.close(e.className);
//                   })
//                 : Manager.uiManager.close(this.className);
//         };
//         t.prototype.xianshi_dongzuo = function () {
//             return Promise.resolve();
//         };
//         t.prototype.show = function (e) {
//             this._args = e;
//             if (this.node) {
//                 this.node.active = !0;
//             }
//             if (this.xianshi_dongzuo) {
//                 this.xianshi_dongzuo();
//             }
//         };
//         t.prototype.yincang_dongzuo = function () {
//             return Promise.resolve();
//         };
//         t.prototype.hide = function () {
//             var e = this;
//             this.yincang_dongzuo
//                 ? this.yincang_dongzuo().then(function () {
//                       if (e.node) {
//                           e.node.removeFromParent();
//                       }
//                   })
//                 : this.node && this.node.removeFromParent();
//         };
//         t.prototype.onLoad = function () {
//             if (e.prototype.onLoad) {
//                 e.prototype.onLoad.call(this);
//             }
//         };
//         t.prototype.onDestroy = function () {
//             Manager.uiManager.chuli_ui_xiaohui(this.className);
//             if (e.prototype.onLoad) {
//                 e.prototype.onDestroy.call(this);
//             }
//         };
//         t.prototype.handle_button_callback = function () {};
//         return __decorate([c], t);
//     })(cc.Component));
// exports.default = l;
// window.AL_Framework_UI_View = l;

const { ccclass, property } = cc._decorator;

/**
 * UIView类
 * 此类继承自cc.Component，主要用于UI视图的管理，包括显示、隐藏、关闭等逻辑。
 */
@ccclass
class AL_Framework_UI_View extends cc.Component {
    /** @type {cc.Node | null} UI内容节点 */
    _content = null;

    /** @type {string} 类名 */
    _className = "unknow";

    /** @type {string | null} 资源包名 */
    _bundle = null;

    /** @type {any} 参数 */
    params = null;

    /** @type {any} 额外参数 */
    _args = null;

    /**
     * 获取预制体URL。
     * @returns {string} 返回预制体的URL。
     */
    static huoqu_yuzhiti_url() {
        return "";
    }

    /**
     * 获取额外参数。
     * @returns {any} 返回额外参数。
     */
    get args() {
        return this._args;
    }

    /**
     * 设置额外参数。
     * @param {any} value 额外参数。
     */
    set args(value) {
        this._args = value;
    }

    /**
     * 获取内容节点。
     * @returns {cc.Node | null} 返回内容节点。
     */
    get content() {
        return this._content;
    }

    /**
     * 设置内容节点。
     * @param {cc.Node | null} value 内容节点。
     */
    set content(value) {
        this._content = value;
    }

    /**
     * 获取类名。
     * @returns {string} 返回类名。
     */
    get className() {
        return this._className;
    }

    /**
     * 设置类名。
     * @param {string} value 类名。
     */
    set className(value) {
        this._className = value;
    }

    /**
     * 获取资源包名。
     * @returns {string | null} 返回资源包名。
     */
    get bundle() {
        return this._bundle;
    }

    /**
     * 设置资源包名。
     * @param {string | null} value 资源包名。
     */
    set bundle(value) {
        this._bundle = value;
    }

    /**
     * 关闭动作，子类可重写此方法进行自定义逻辑。
     * @returns {Promise<void>}
     */
    async guanbi_dongzuo() {
        return Promise.resolve();
    }

    /**
     * 关闭界面。
     */
    close() {
        if (this.guanbi_dongzuo) {
            this.guanbi_dongzuo().then(() => {
                Manager.uiManager.close(this.className);
            });
        } else {
            Manager.uiManager.close(this.className);
        }
    }

    /**
     * 显示动作，子类可重写此方法进行自定义逻辑。
     * @returns {Promise<void>}
     */
    async xianshi_dongzuo() {
        return Promise.resolve();
    }

    /**
     * 显示界面。
     * @param {any} args 显示时的参数。
     */
    show(args) {
        this._args = args;

        if (this.node) {
            this.node.active = true;
        }

        if (this.xianshi_dongzuo) {
            this.xianshi_dongzuo();
        }
    }

    /**
     * 隐藏动作，子类可重写此方法进行自定义逻辑。
     * @returns {Promise<void>}
     */
    async yincang_dongzuo() {
        return Promise.resolve();
    }

    /**
     * 隐藏界面。
     */
    hide() {
        if (this.yincang_dongzuo) {
            this.yincang_dongzuo().then(() => {
                if (this.node) {
                    this.node.removeFromParent();
                }
            });
        } else if (this.node) {
            this.node.removeFromParent();
        }
    }

    /**
     * 生命周期函数：onLoad。
     * 在节点加载时调用。
     */
    onLoad() {
        if (super.onLoad) {
            super.onLoad.call(this);
        }
    }

    /**
     * 生命周期函数：onDestroy。
     * 在节点销毁时调用。
     */
    onDestroy() {
        Manager.uiManager.chuli_ui_xiaohui(this.className);

        if (super.onDestroy) {
            super.onDestroy.call(this);
        }
    }

    /**
     * 处理按钮点击回调，子类可重写此方法进行自定义逻辑。
     */
    handle_button_callback() {}
}

// 导出UIView类
exports.default = AL_Framework_UI_View;

// 将UIView挂载到全局window对象，方便在其他文件中访问
window.AL_Framework_UI_View = AL_Framework_UI_View;



// // 定义模块变量
// var decoratorNamespace;
// var ccDecorator = cc._decorator;
// var classDecorator = ccDecorator.ccclass;

// /** 
//  * UIView类 
//  * 继承自cc.Component
//  */
// var AL_Framework_UI_View = (function (BaseComponent) {
//     // 继承父类
//     function CustomComponent() {
//         // 调用父类构造函数
//         var instance = (null !== BaseComponent && BaseComponent.apply(this, arguments)) || this;
//         // 定义类属性
//         instance._content = null;
//         instance._className = "unknow";
//         instance._bundle = null;
//         instance.params = null;
//         return instance;
//     }

//     __extends(CustomComponent, BaseComponent);

//     /**
//      * 获取Prefab URL
//      * @returns {string} 空字符串
//      */
//     CustomComponent.huoqu_yuzhiti_url = function () {
//         return "";
//     };

//     // 属性定义及访问器
//     Object.defineProperty(CustomComponent.prototype, "args", {
//         get: function () {
//             return this._args;
//         },
//         set: function (argumentsValue) {
//             this._args = argumentsValue;
//         },
//         enumerable: false,
//         configurable: true
//     });

//     Object.defineProperty(CustomComponent.prototype, "content", {
//         get: function () {
//             return this._content;
//         },
//         set: function (contentValue) {
//             this._content = contentValue;
//         },
//         enumerable: false,
//         configurable: true
//     });

//     Object.defineProperty(CustomComponent.prototype, "className", {
//         get: function () {
//             return this._className;
//         },
//         set: function (classNameValue) {
//             this._className = classNameValue;
//         },
//         enumerable: false,
//         configurable: true
//     });

//     Object.defineProperty(CustomComponent.prototype, "bundle", {
//         get: function () {
//             return this._bundle;
//         },
//         set: function (bundleValue) {
//             this._bundle = bundleValue;
//         },
//         enumerable: false,
//         configurable: true
//     });

//     /**
//      * 关闭动作
//      * @returns {Promise<void>}
//      */
//     CustomComponent.prototype.guanbi_dongzuo = function () {
//         return Promise.resolve();
//     };

//     /**
//      * 关闭视图
//      */
//     CustomComponent.prototype.close = function () {
//         var self = this;
//         this.guanbi_dongzuo()
//             .then(function () {
//                 Manager.uiManager.close(self.className);
//             })
//             .catch(function () {
//                 Manager.uiManager.close(self.className);
//             });
//     };

//     /**
//      * 显示动作
//      * @returns {Promise<void>}
//      */
//     CustomComponent.prototype.xianshi_dongzuo = function () {
//         return Promise.resolve();
//     };

//     /**
//      * 显示视图
//      * @param {any} argumentsValue 参数
//      */
//     CustomComponent.prototype.show = function (argumentsValue) {
//         this._args = argumentsValue;
//         if (this.node) {
//             this.node.active = true;
//         }
//         if (this.xianshi_dongzuo) {
//             this.xianshi_dongzuo();
//         }
//     };

//     /**
//      * 隐藏动作
//      * @returns {Promise<void>}
//      */
//     CustomComponent.prototype.yincang_dongzuo = function () {
//         return Promise.resolve();
//     };

//     /**
//      * 隐藏视图
//      */
//     CustomComponent.prototype.hide = function () {
//         var self = this;
//         this.yincang_dongzuo()
//             .then(function () {
//                 if (self.node) {
//                     self.node.removeFromParent();
//                 }
//             })
//             .catch(function () {
//                 if (self.node) {
//                     self.node.removeFromParent();
//                 }
//             });
//     };

//     /**
//      * 加载时调用
//      */
//     CustomComponent.prototype.onLoad = function () {
//         if (BaseComponent.prototype.onLoad) {
//             BaseComponent.prototype.onLoad.call(this);
//         }
//     };

//     /**
//      * 销毁时调用
//      */
//     CustomComponent.prototype.onDestroy = function () {
//         Manager.uiManager.chuli_ui_xiaohui(this.className);
//         if (BaseComponent.prototype.onDestroy) {
//             BaseComponent.prototype.onDestroy.call(this);
//         }
//     };

//     /**
//      * 处理按钮回调
//      */
//     CustomComponent.prototype.handle_button_callback = function () {};

//     return __decorate([classDecorator], CustomComponent);
// })(cc.Component);

// exports.default = AL_Framework_UI_View;
// window.AL_Framework_UI_View = AL_Framework_UI_View;
